{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c7a6b0ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9a711531",
   "metadata": {},
   "outputs": [],
   "source": [
    "import time"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "adcb4b18",
   "metadata": {},
   "source": [
    "# 原生实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "67b91f44",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.24.3'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fccce6c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def python_sum(n): \n",
    "    #使用原生Python实现两个数组的加法\n",
    "    a = [i**2 for i in range(n)] # 使用列表生成创建1到n的平方\n",
    "    b = [i**3 for i in range(n)] # 使用列表生成创建1到n的立方\n",
    "    # 创建新的列表\n",
    "    ab_sum = []\n",
    "    for i in range(n):\n",
    "        ab_sum.append(a[i] + b[i])\n",
    "    return ab_sum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8a80450a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 2, 12, 36, 80, 150, 252, 392, 576, 810]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "python_sum(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2174a770",
   "metadata": {},
   "source": [
    "# numpy实现"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03a378ce",
   "metadata": {},
   "source": [
    "### arrange函数\n",
    "np.arange([start, ]stop, [step, ]dtype=None)\n",
    "\n",
    "参数解释：\n",
    "- start:起点值；可忽略不写，默认从0开始\n",
    "- stop:终点值；生成的元素不包括结束值\n",
    "- step:步长；可忽略不写，默认步长为1\n",
    "- dtype:默认为None，设置显示元素的数据类型\n",
    "    \n",
    "不同参数个数情况介绍：\n",
    "- 一个参数时，参数值为终点值，起点取默认值0，步长取默认值1。\n",
    "- 两个参数时，第一个参数为起点值，第二个参数为终点，步长取默认值1。\n",
    "- 三个参数时，第一个参数为起点，第二个参数为终点，第三个参数为步长，其中步长支持小数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "08eef896",
   "metadata": {},
   "outputs": [],
   "source": [
    "def numpy_sum(n):\n",
    "    # numpy实现两个数组加法\n",
    "    a = np.arange(n) ** 2\n",
    "    b = np.arange(n) ** 3\n",
    "    return a + b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "dfcfb7cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  0,   2,  12,  36,  80, 150, 252, 392, 576, 810])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "numpy_sum(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "253ac750",
   "metadata": {},
   "source": [
    "## 对比实现1000次"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d42a565",
   "metadata": {},
   "source": [
    "### %time && %timeit 用法\n",
    "1、%time、%timeit、%%time、%%timeit的比较\n",
    "\n",
    "%time： 在行模式下，代码运行一次所花费的时间。\n",
    "%%time：在单元模式下，代码运行一次所花费的时间。\n",
    "\n",
    "%timeit： 在行模式下，执行代码块若干次，取最佳结果。\n",
    "%%timeit： 在单元模式下，执行代码块若干次，取最佳结果。\n",
    "\n",
    "### 注解：\n",
    "\n",
    "- 行模式： 只对紧跟其后的代码进行测试。即无法使用换行符来添加代码块进行测试。\n",
    "\n",
    "- 单元模式： 用于代码块的测试。它不仅对紧跟其后的代码发挥作用，通过换行符添加的其余代码，会被视为一个整体进行测试。其中，第一行代码用作设置代码（已执行但未计时），并且单元的主体已计时。单元主体可以访问在设置代码中创建的任何变量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "19b8b9b3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "321 µs ± 1.63 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit python_sum(1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "751fe785",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.62 µs ± 18.6 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit numpy_sum(1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7c851c2",
   "metadata": {},
   "source": [
    "## 对比实现10w次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "828dc834",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "34.4 ms ± 81.5 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit python_sum(100000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "da782d4a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "244 µs ± 25.7 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit numpy_sum(100000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2732cee2",
   "metadata": {},
   "source": [
    "## 对比实现100w次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "9432b0f9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "358 ms ± 2.51 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
     ]
    }
   ],
   "source": [
    "%timeit python_sum(1000000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "39b571bd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.31 ms ± 323 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit numpy_sum(1000000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "edcdcca1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5e4df047",
   "metadata": {},
   "outputs": [],
   "source": [
    "python_times = [320, 34.5*1000, 357*1000]\n",
    "numpy_times = [3.65, 260, 3.53*1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8855f6da",
   "metadata": {},
   "outputs": [],
   "source": [
    "#创建pandas的DataFrame类型数据\n",
    "charts_data = pd.DataFrame({\n",
    "    'python_times': python_times,\n",
    "    'numpy_times': numpy_times\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "f83a14bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>python_times</th>\n",
       "      <th>numpy_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>320.0</td>\n",
       "      <td>3.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34500.0</td>\n",
       "      <td>260.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>357000.0</td>\n",
       "      <td>3530.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   python_times  numpy_times\n",
       "0         320.0         3.65\n",
       "1       34500.0       260.00\n",
       "2      357000.0      3530.00"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "charts_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "e52f3113",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "charts_data.plot() # 线性图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "260cb5a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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OnVKH3zwgfr163febd566636n//5H82fP19PP/20wsPDtXDhQq8Tpb+Pbt266T//8z+1cOFCzZ8/X3fccYfXpf3fh91u10cffaTHHnvM+L717dtXY8eO1Q9+8AMFBgZq27Zteu655+RyudS3b18tX75c48aN65DtAwA6XruD0J49exQXF6fTp0/r6quvVm5urqKioiRJ48aN009/+lP17dtXBw8e1G9+8xvdfffdKisrk9VqVU1NjXx9fRUUFOS1ztDQUNXU1EiSampqjOD0bSEhIV41LSeytggKCpKvr69XzZk/zC3vqampOWcQWrx4sZ566ql2fipXpu7du+u5557T6tWrz7rc4/Ho6NGjmj59eqtlffr0UUFBwVnf8209e/ZsNe++++5r83yjysrKVvPa89iOBx98UA8++KDXvHXr1nm9Pls4Ott2z+x9wIABeuONN8663YEDBxqHcwEAV4Z2B6HIyEiVl5frxIkT2rhxo6ZMmaKtW7cqKipKkydPNuqio6MVGxurvn37Ki8vT/fee+8513nmCbRnO2zVETUtP2ptHRabO3eu1/kcLpdLERER56zvqmpra7V+/Xr94x//0C9/+cvObgcAgIui3ZfP+/r66oYbblBsbKwWL16sIUOG6Pe///1Za8PDw9W3b18dOHBAkhQWFqbGxsZWlxTX1tYaozVhYWE6evRoq3UdO3bMq6Zl5KdFXV2dmpqa2qxpuQz6zNGkb7NarcZVcS2TGYWGhmrJkiV64YUXWo3gdaZFixZ5Xb7+7YlDUACA9vreN1T0eDxe59R82/Hjx1VVVWXcSyYmJkbdu3dXYWGhJk2aJEmqrq5WRUWFli5dKumbe9k4nU7jDsGStH37djmdTg0fPtyoeeaZZ1RdXW2su6CgQFarVTExMUbNvHnz1NjYaFxJVFBQILvdfkHnsnR15ztv5nK9zcDDDz9sfHfO5Ofnd4m7AQBc6doVhObNm6dx48YpIiJCJ0+eVE5OjrZs2aL8/HydOnVKCxYs0H333afw8HBVVlZq3rx5Cg4O1j333CPpmwdfTps2TZmZmerdu7d69eqlrKwsDRo0yLiKbODAgRo7dqzS0tL0/PPPS/rm8vmkpCRFRkZKkhISEhQVFSWHw6Fnn31W//znP5WVlaW0tDRjBCclJUVPPfWUUlNTNW/ePB04cECLFi3S/PnzuWLs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a2p3EIqMjFR5eblKS0v1yCOPaMqUKdq7d6+x/MxDTh6P57yHoc6sOVt9R9S0HAVsq5/FixcbJ2nbbDZFRES02TsAALhytTsI+fr66oYbblBsbKwWL16sIUOG6Pe//73CwsIktR5tqa2tNUZiwsLC1NjYqLq6ujZrjh492mq7x44d86o5czt1dXVqampqs6a2tlZS61Grb5s7d66cTqcxVVVVtf2BAACAK9b3vo+Qx+OR2+1W//79FRYWpsLCQmNZY2Ojtm7dquHDh0uSYmJi1L17d6+a6upqVVRUGDVxcXFyOp3asWOHUbN9+3Y5nU6vmoqKClVXVxs1BQUFslqtiomJMWq2bdvmdUl9QUGB7Ha7+vXrd879sVqtxu0BWiYAANA1tSsIzZs3Tx9++KEqKyu1Z88ePfHEE9qyZYt+/vOfy2KxKD09XYsWLVJubq4qKiqUmpqqHj16KCUlRZJks9k0bdo0ZWZmavPmzdq9e7ceeOABDRo0SKNHj5YkDRw4UGPHjlVaWppKS0tVWlqqtLQ0JSUlKTIyUpKUkJCgqKgoORwO7d69W5s3b1ZWVpbS0tKM4JKSkiKr1arU1FRVVFQoNzdXixYtUkZGxgVfMQYAALq2bu0pPnr0qBwOh6qrq2Wz2TR48GDl5+drzJgxkqRHH31UDQ0NmjFjhurq6jR06FAVFBQoICDAWMeKFSvUrVs3TZo0SQ0NDRo1apTWrVsnHx8fo2bDhg2aM2eOcXXZhAkTtGrVKmO5j4+P8vLyNGPGDI0YMUJ+fn5KSUnRsmXLjBqbzabCwkLNnDlTsbGxCgoKUkZGhjIyMr7bJwUAALqc730foa6O+wgBQNfBfYTM46LfRwgAAOBKRxACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACm1a4gtHjxYt12220KCAhQSEiIJk6c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24CJNDQ0qKioSHv37m217PTp03r55Zc7oStz4T5CuChuu+023X777VqxYsVZl//qV79SUVGRdu7ceYk7A87t//7v/3Trrbequbm5s1uBCXz22WdKSEjQoUOHZLFYdMcdd+i1115TeHi4JOno0aOy2+18Hy8yghAuCj8/P5WXlysyMvKsyz/99FPdcsstamhouMSdwczeeuutNpd/8cUXyszM5IcHl8Q999yjr776SmvXrtWJEyeUkZGhiooKbdmyRddddx1B6BLhHCFcFOHh4SouLj5nECopKTH+rwe4VCZOnCiLxaK2/v/PYrFcwo5gZsXFxXrvvfcUHBys4OBgvfXWW5o5c6buuOMOffDBB/L39+/sFk2BIISLIisrSw8//LDKyso0ZswYhYaGymKxqKamRoWFhfrv//5vPffcc53dJkwmPDxcf/jDHzRx4sSzLi8vL1dMTMylbQqm1dDQoG7dvH+G//CHP+gHP/iB4uPj9eqrr3ZSZ+ZCEMJFMWPGDPXu3VsrVqzQ888/bwzt+vj4KCYmRi+//LImTZrUyV3CbGJiYvS3v/3tnEHofKNFQEe66aabtGvXLg0cONBr/sqVK+XxeDRhwoRO6sxcOEcIF11TU5O+/PJLSVJwcLC6d+/eyR3BrD788EPV19dr7NixZ11eX1+vXbt2KT4+/hJ3BjNavHixPvzwQ73zzjtnXT5jxgz913/9l77++utL3Jm5EIQAAIBpcR8hAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWgQhAABgWv8fdnfApADBnogAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "charts_data.plot.bar() # 柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7125557b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "515377520732011331036461129765621272702107522001"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "3 ** 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2fdf176a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "print(sys.version)\n",
    "print(sys.executable)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python(numpy_learning)",
   "language": "python",
   "name": "numpy_learning"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
